Немного подправим предыдущий "Шаг 9 - Создаем Direct3D при помощи MFC".
После всех #include поставим:
#define _RELEASE_(p) { if(p) { (p)->Release(); (p)=NULL; };};
#define _DELETE_(p) { if(p) { delete (p); (p)=NULL; };};
Для более подробной информации смотрите "Шаг 1 - Инициализация оконного приложения". Перенесите инициализацию устройств Direct3D в наш класс:
class CMainWnd : public CFrameWnd
{
public:
CMainWnd(); // Конструктор по умолчанию
private:
LPDIRECT3D8 p_d3d; // наш главный интерфейс
LPDIRECT3DDEVICE8 p_d3d_Device; // наше устройство d3d8
};
И напишем деструктор. Для этого щелкнем правой кнопкой мышки на класс CMainWnd отображаемый в окне Class View:

Далее выберем Add -> Add Function (Добавить->Добавить Функцию), в появившемся окне выбираем из выпадающего списка void и пишем название деструктора:

Переходим в него и добавляем код:
CMainWnd::~CMainWnd(void)
{
_RELEASE_(p_d3d_Device);
_DELETE_(p_d3d_Device);
_RELEASE_(p_d3d);
_DELETE_(p_d3d);
}
Вначале удаляется устройство, а затем только сам Direct3D и ни в коем случае не наоборот.